home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 05.zip / BS1 part 5 / ANC_UTULITYS_16.adf / arclist / asm1.arc / pas111.S < prev    next >
Text File  |  1988-09-21  |  19KB  |  922 lines

  1. ;
  2. ;
  3. ;
  4. ;        P.A.S. MENU INTRO, WRITTEN ON 3/4 '88
  5. ;
  6. ;               © 1988 By AntiAction
  7. ;
  8. ;
  9. ;
  10. ;        STUPIDITY IS THE WORD, BYTE BANDIT!
  11. ;
  12.  
  13. beg:                    ; As usual...
  14. movem.l    d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(a7)
  15. move.l    a7,InitialSP            ; Just to be on the safe side
  16. bsr    AllocnLoad            ; Allocate memory & load files
  17. bsr    SwitchOSout            ; Switch out Operating System
  18. bsr    InitScreenStuff            ; Do screen initialization
  19. bsr    InitMusic
  20. bsr    Initchips            ; Setup Custom chip pointers
  21. bsr    Initint                ; Setup Interrupts.
  22. bsr    Wait                ; Handle input stuff
  23. bsr    Resetint            ; Reset interrupts
  24. bsr    Resetchips            ; Reset custom chips
  25. bsr    ResetMusic
  26. bsr    SwitchOSin            ; Switch in Operating System.
  27. bsr    DeAlloc                ; Deallocate memory
  28. move.l    InitialSP,a7            ; Restore Stack Frame Pointer
  29. movem.l    (a7)+,a0/a1/a2/a3/a4/a5/a6/d0/d1/d2/d3/d4/d5/d6/d7
  30. ;bsr    Executeprogram
  31. ;bra.s    beg
  32. rts
  33.  
  34. Executeprogram:
  35. move.l    dosbase,a6
  36. move.l    exestring,d1
  37. moveq    #0,d2
  38. moveq    #0,d3
  39. jsr    -222(a6)            ; Execute()
  40. rts
  41.  
  42. exestring:dc "df0:c/execute df0:s/"
  43. digits:dc "00",0,0
  44.  
  45. InitMusic:
  46. jsr    $7ef00
  47. rts
  48.  
  49. ResetMusic:
  50. move.w    #$f,$dff096
  51. rts
  52.  
  53. InitialSP:dc.l 0            ; Hold initial SP
  54.  
  55. SwitchOSout:                ; Switch out disturbing stuff.
  56. move.l    $4,a6                ; System Base
  57. lea    gfxlib,a1
  58. clr.l    d0
  59. jsr    -552(a6)            ; _LVOOpenLibrary
  60. move.l    d0,gfxbase            ; Save Graphics_lib base
  61. jsr    -$84(a6)            ; _LVOForbid
  62. ;jsr    -$96(a6)            ; _LVOSuperState
  63. ;move.l    d0,systack            ; System stack
  64. rts
  65.  
  66. systack:dc.l 0
  67. gfxlib:dc "graphics.library",0,0
  68. gfxbase:dc.l 0
  69.  
  70. Initchips:                ; Initialize custom chips
  71. move.w    $dff01c,intesave
  72. move.w    $dff01e,intrsave
  73. move.w    $dff002,dmasave
  74. move.w    $dff010,adksave
  75. move.w    #%0111111111111111,$dff096    ; DMACONW
  76. move.w    #%1000001111100000,$dff096    ; Disable disk access.
  77. move.w    #%0111111111111111,$dff09a    ; INTENA
  78. move.w    #%1100000000110100,$dff09a    ; Enable desired IRQ's
  79. rts
  80.  
  81. intesave:dc.w    0
  82. intrsave:dc.w    0
  83. dmasave:dc.w    0
  84. adksave:dc.w    0
  85.  
  86. InitInt:                ; Initialize interrupts
  87. move.l    $6c,level3save            ; Save level 3 vector
  88. move.l    $6c,af3+2
  89. move.l    $68,level2save            ; Save level 2 vector
  90. move.l    $68,af2+2
  91. move.l    #level2irq,$68            ; Set new interrupt vector 2
  92. move.l    #level3irq,$6c            ; Set new interrupt vector 3
  93. rts
  94.  
  95. level2save:dc.l 0
  96. level3save:dc.l 0
  97.  
  98. holdjoy1:dc.w 0
  99. holdjoy2:dc.w 0
  100. hold0:dc.l 0
  101. hold1:dc.l 0
  102.  
  103. Wait:                    ; Wait.
  104. moveq    #0,d0
  105. move.w    $dff00a,holdjoy1
  106. nothere:
  107. cmpi.b    #$2b,$dff006
  108. bne.s    nothere
  109.  
  110. move    holdjoy1,d0
  111. move.w    $dff00a,holdjoy2
  112. cmp.w    holdjoy2,d0
  113. beq.s    nomove
  114.  
  115. bsr    doit
  116. moveq    #0,d0
  117. move.w    $dff00a,d0
  118. lsr.w    #8,d0
  119. lsr.w    #4,d0
  120. move.l    d0,hold0
  121. move.b    d0,hold1
  122.  
  123. move.w    $dff00a,d0
  124. andi.w    #$80,d0
  125. beq.s    leftright
  126. cmpi.b    #8,hold1
  127. bgt.s    nomove
  128.  
  129. addq.b    #8,hold1
  130. bra.s    nomove
  131.  
  132. leftright:
  133. cmpi.b    #8,hold1
  134. blt.s    nomove
  135. subq.b    #8,hold1
  136.  
  137. nomove:
  138. btst    #6,$bfe001
  139. bne.s    nothere
  140.  
  141. moveq    #0,d0
  142. move.b    hold1,d0            ; Prepare execute string
  143. divu    #10,d0
  144. add.b    #48,d0
  145. move.b    d0,digits
  146. swap    d0
  147. add.b    #48,d0
  148. move.b    d0,digits+1
  149. rts
  150.  
  151. doit:
  152. moveq    #0,d0
  153. move.b    hold1,d0
  154. lea    mcol+2,a0
  155. moveq    #0,d7
  156. move.w    #$f00,d3
  157.  
  158. doitwillya:
  159. move.w    d3,(a0)
  160. eor.w    #$f0f,d3
  161. cmp.b    d7,d0
  162. bne.s    nothishuh
  163. move.w    #$fff,(a0)
  164. nothishuh:
  165. addq.l    #4,a0
  166. addq.b    #1,d7
  167. cmpi.b    #$8,d7
  168. bne.s    nonowhuh
  169. eor.w    #$0f0f,d3
  170. nonowhuh:
  171. cmpi.b    #$10,d7
  172. bne.s    doitwillya
  173. rts
  174.  
  175. ResetInt:                ; Reset Interrupts
  176. move.l    level3save,$6c            ; Restore level 3 vector
  177. move.l    level2save,$68            ; Restore level 2 vector
  178. rts
  179.  
  180. Resetchips:                ; Reset custom chips
  181. move.w    intesave,d7
  182. bset    #$f,d7
  183. move.w    d7,$dff09a            ; Reset Interrupts
  184. move.w    intrsave,d7
  185. bset    #$f,d7
  186. move.w    d7,$dff09c            ; Reset interrupt request
  187. move.w    dmasave,d7
  188. bset    #$f,d7
  189. move.w    d7,$dff096            ; Reset DMAConw
  190. move.w    adksave,d7
  191. bset    #$f,d7
  192. move.w    d7,$dff09e            ; Reset ADK
  193.  
  194. move.l    gfxbase,a0
  195. move.l    $26(a0),$dff080
  196. rts
  197.  
  198. SwitchOSIn:                ; Allow OS to operate again.
  199. move.l    4,a6                ; System Base
  200. jsr    -$8a(a6)            ; _LVOPermit
  201. ;move.l    systack,d0            ; Systemstack
  202. ;jsr    -$9c(a6)            ; _LVOUserState
  203. rts
  204.  
  205. level2irq:
  206. movem.l    d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(a7)
  207.                 ; A DO-NOTHING ROUTINE
  208. movem.l    (a7)+,d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6
  209. af2:jmp 0
  210.  
  211. AllocnLoad:
  212. move.l    #$10000,d0            ; ByteSize
  213. lea    $6e000,a1            ; Location
  214. move.l    4,a6                ; AbsExecBase
  215. jsr    -$cc(a6)            ; AllocAbs
  216. move.l    #$10000,d0            ; ByteSize
  217. lea    $50000,a1            ; Location
  218. jsr    -$cc(a6)            ; AllocAbs
  219. lea    dosname,a1
  220. moveq    #31,d0                ; Lowest version = 1.1
  221. jsr    -552(a6)            ; OpenLibrary
  222. move.l    d0,dosbase
  223. move.l    d0,a6                ; Save Dos.library base
  224. move.l    #muzakname,d1
  225. move.l    #1005,d2            ; Filename & accessmode.
  226. jsr    -30(a6)                ; Open
  227. move.l    d0,d7
  228. move.l    #$6e15c,d2            ; Buffer
  229. move.l    #$fffff,d3            ; Length
  230. move.l    d7,d1                ; Filehandle
  231. jsr    -42(a6)                ; Read
  232. move.l    d7,d1
  233. jsr    -36(a6)                ; Close file
  234. rts
  235.  
  236. muzakname:dc "df0:menustuff",0
  237. dosname:dc "dos.library",0
  238. dosbase:dc.l 0
  239.  
  240. DeAlloc:
  241. lea    $6e000,a1
  242. move.l    #$10000,d0
  243. move.l    4,a6
  244. jsr    -210(a6)            ; Free some memory
  245. lea    $50000,a1
  246. move.l    #$10000,d0
  247. jsr    -210(a6)            ; FreeMem
  248. rts
  249.  
  250. InitScreenStuff:
  251. move.l    gfxbase,a6            ; Use graphics.library
  252. lea    bitmap,a0
  253. move.l    #5,d0
  254. move.l    #320,d1
  255. move.l    #200,d2                ; init a 32 color 320x200 scrn
  256. jsr    -$186(a6)            ; InitBitMap
  257. move.l    #$50000,bitmap+8        ; First Bitplane
  258. move.l    #$51f40,bitmap+12        ; Second Bitplane
  259. move.l    #$53e80,bitmap+16        ; Third BitPlane
  260. move.l    #$55dc0,bitmap+20        ; Fourth BitPlane
  261. move.l    #$57d00,bitmap+24        ; Fifth Bitplane
  262. lea    rastport,a1
  263. jsr    -198(a6)            ; InitRastPort
  264. move.l    #bitmap,rastport+4
  265.  
  266. lea    scbitmap,a0
  267. move.l    #1,d0
  268. move.l    #$180,d1
  269. move.l    #10,d2                ; init a 2 color 400x10 scrn
  270. jsr    -$186(a6)            ; InitBitMap
  271. move.l    #$5a000,scbitmap+8        ; First Bitplane
  272. lea    scrastport,a1
  273. jsr    -198(a6)            ; InitRastPort
  274. move.l    #scbitmap,scrastport+4        ; struct BitMap *bitmap
  275.  
  276. lea    rastport,a1
  277. jsr    -48(a6)                ; ClearScreen
  278.  
  279. lea    scrastport,a1
  280. jsr    -48(a6)                ; ClearScreen (scrolly)
  281.  
  282. lea    topazfont,a0
  283. jsr    -$48(a6)            ; OpenFont
  284. move.l    d0,d7
  285.  
  286. move.l    d0,a0
  287. lea    rastport,a1
  288. jsr    -$42(a6)            ; SetFont
  289.  
  290. move.l    d7,d0
  291. lea    scrastport,a1            ; SetFont
  292. jsr    -$42(a6)
  293.  
  294. bsr    dodisplay            ; Print menu choices.
  295.  
  296. move.l    #copl,$dff080            ; Setup copperlist
  297. rts
  298.  
  299. dodisplay:
  300. moveq    #0,d7                ; Item no.
  301. moveq    #1,d6                ; Pen no.
  302. move.l    #110,d5                ; Y pos'n
  303. lp:
  304. cmpi.b    #7,d7
  305. bgt.s    isright
  306. moveq    #32,d4                ; X pos'n
  307. bra.s    notright
  308. isright:
  309. move.l    #160,d4
  310. notright:
  311. move.l    d4,d0
  312. move.l    d5,d1
  313. lea    rastport,a1            ; Move
  314. move.l    gfxbase,a6
  315. jsr    -240(a6)
  316.  
  317. move.l    d6,d0
  318. lea    rastport,a1
  319. jsr    -$156(a6)            ; SetAPen
  320.  
  321. lea    thenames,a0
  322. move.l    d7,d0
  323. mulu    #20,d0
  324. lea    (a0,d0.w),a0
  325. moveq    #20,d0
  326. lea    rastport,a1
  327. jsr    -$3c(a6)            ; Text
  328.  
  329. addq.b    #1,d7
  330. addq.b    #1,d6
  331. add.l    #10,d5
  332. cmpi.b    #8,d7
  333. bne.s    nonw
  334. move.l    #110,d5                ; Ypos
  335. nonw:
  336. cmpi.b    #15,d7
  337. bne.s    nolast
  338. moveq    #31,d6
  339. nolast:
  340. cmpi.b    #16,d7
  341. bne.s    lp
  342. bsr    drawbar                ; Place bounce bar on screen
  343. rts
  344.  
  345. thenames:
  346. dc " 1.Some stuff       "
  347. dc " 2.Some other       "
  348. dc " 3.Blaha            "
  349. dc " 4.So what?         "
  350. dc " 5  123             "
  351. dc " 6                  "
  352. dc " 7                  "
  353. dc " 8  444             "
  354. dc " 9                  "
  355. dc "10   5873           "
  356. dc "11                  "
  357. dc "12                  "
  358. dc "13                  "
  359. dc "14                  "
  360. dc "15                  "
  361. dc "16                  "
  362.  
  363. topazfont:dc.l topaz
  364. dc.b 0,8,0,0
  365.  
  366. topaz:dc "topaz.font",0,0
  367.  
  368. scbitmap:blk 50,0
  369. bitmap:blk 50,0
  370. rastport:blk 100,0
  371. scrastport:blk 100,0
  372.  
  373. doflash:
  374. lea    flash,a0
  375. move.w    (a0),d7
  376. moveq    #30,d0
  377. lp2:
  378. move.w    8(a0),(a0)
  379. addq.l    #8,a0
  380. dbf    d0,lp2
  381. move.w    d7,(a0)
  382. rts
  383.  
  384. dostars:
  385. bsr    resetpix
  386. move.l    #99,d6
  387. moveq    #0,d1            ; Y position
  388. moveq    #0,d0
  389. lea    xtab,a6            ; XPOSITION table
  390. lea    stab,a5            ; Speed table
  391. lea    $50000,a0
  392. lea    $51f40,a1
  393. lea    $53e80,a2
  394. lea    $55dc0,a3
  395. lea    $57d00,a4
  396. moveq    #0,d5
  397. loopitman:
  398. move.w    (a6)+,d0        ; Get x pos'n
  399. move.b    (a5)+,d5        ; Get speed
  400. moveq    #80,d4
  401. add.w    d4,a0
  402. add.w    d4,a1
  403. add.w    d4,a2
  404. add.w    d4,a3
  405. add.w    d4,a4
  406. move.w    d0,d2
  407. asr.w    #3,d2            ; Divide by eight
  408. not.b    d0            ; Coz' numbered from right
  409. andi.w    #7,d0
  410.  
  411. move.l    a0,-(a7)
  412. move.l    tabptr,a0
  413. addq.l    #1,tabptr
  414. move.b    (a0),d4
  415. move.l    (a7)+,a0
  416. tst.b    d4
  417.  
  418. bne.s    noclr
  419. bclr    d0,0(a4,d2.b)        ; Clear old star
  420. bclr    d0,0(a3,d2.b)
  421. bclr    d0,0(a2,d2.b)
  422.  
  423. noclr:
  424. add.w    d5,-2(a6)        ; Current XPosition
  425. sub.w    d5,d0
  426. bpl.s    noincm
  427. andi.b    #7,d0
  428. addq.b    #1,d2
  429. cmpi.w    #319,-2(a6)
  430. ble.s    noincm
  431. move.w    #0,-2(a6)
  432. subi.w    #$28,d2
  433. moveq    #7,d0
  434. noincm:
  435.  
  436. move.l    a5,d7
  437. move.l    tabptr,a5
  438. btst    d0,0(a0,d2.b)
  439. bne.s    cret
  440. btst    d0,0(a1,d2.b)
  441. bne.s    cret
  442. btst    d0,0(a2,d2.b)
  443. bne.s    cret
  444. btst    d0,0(a3,d2.b)
  445. bne.s    cret
  446. btst    d0,0(a4,d2.b)
  447. cret:
  448. sne    -1(a5)
  449. bne.s    noset
  450. bset    d0,0(a4,d2.b)
  451. cmp.b    #1,d5
  452. beq.s    noset
  453. cmp.b    #2,d5
  454. bne.s    lvl3
  455. bset    d0,0(a3,d2.b)
  456. bra.s    noset
  457. lvl3:
  458. bset    d0,0(a2,d2.b)
  459. noset:
  460. move.l    d7,a5
  461. dbf    d6,loopitman
  462. rts
  463.  
  464. resetpix:
  465. move.l    #sttab,tabptr
  466. rts
  467.  
  468. tabptr:dc.l sttab
  469.  
  470. xtab:
  471. dc.w 000,040,034,012,190,080,270,056,091,123
  472. dc.w 075,276,260,005,073,069,132,319,045,065
  473. dc.w 011,033,012,232,290,180,070,156,191,135
  474. dc.w 175,123,187,054,173,269,232,119,045,021
  475. dc.w 088,093,043,174,239,110,042,078,099,063
  476. dc.w 192,310,220,222,132,176,128,033,014,098
  477. dc.w 011,033,012,232,290,180,070,156,191,135
  478. dc.w 175,123,187,054,173,269,232,119,045,021
  479. dc.w 088,093,043,174,239,110,042,078,099,063
  480. dc.w 192,310,220,222,132,176,128,033,014,098
  481.  
  482. stab:
  483. dc.b 1,3,2,1,1,3,2,2,2,3,2,2,1,3,2,2,1,2,1,1
  484. dc.b 3,3,1,1,2,1,3,2,2,2,3,3,1,3,2,1,2,3,2,1
  485. dc.b 3,2,1,1,3,3,2,3,3,1,1,1,2,3,1,1,3,2,2,1
  486. dc.b 3,3,1,1,2,1,3,2,2,2,3,3,1,3,2,1,2,3,2,1
  487. dc.b 3,2,1,1,3,3,2,3,3,1,1,1,2,3,1,1,3,2,2,1
  488.  
  489. sttab:
  490. blk 100,255
  491.  
  492. doscroll:
  493. move.w    #$e9f0,$dff040
  494. clr.w    $dff042
  495. move.l    #-1,$dff044
  496. move.l    #$5a060,$dff050
  497. move.l    #$5a05e,$dff054
  498. clr.l    $dff064
  499. move.w    #$8*64+$30,$dff058
  500. subq.w    #1,count
  501. bne.s    nonew
  502. move.w    #4,count
  503. wt:
  504. btst    #$e,$dff002
  505. bne.s    wt
  506. bsr    scrollstuff
  507. nonew:
  508. rts
  509.  
  510. count:dc.w 4
  511.  
  512. scrollstuff:
  513. move.l    charp,a0
  514. bsr    printitman
  515. addq.l    #1,charp
  516. move.l    charp,a0
  517. tst.b    (a0)
  518. bne.s    noend
  519. move.l    #$5c000,charp
  520. noend:
  521. rts
  522.  
  523. charp:dc.l $5c000
  524.  
  525. printitman:
  526. lea    charset,a5
  527. moveq    #0,d0
  528. moveq    #0,d1
  529. move.b    (a0),d0
  530. divu    #40,d0                ; Get row no.
  531. swap    d0
  532. move.w    d0,d1                ; Where in row
  533. swap    d0
  534. mulu    #320,d0                ; Get real row offset
  535. adda.l    d0,a5
  536. adda.l    d1,a5
  537. moveq    #7,d2
  538. lea    $5a08f,a4
  539. pt:
  540. move.b    (a5),(a4)
  541. adda.l    #48,a4
  542. adda.l    #40,a5
  543. dbf    d2,pt
  544. rts
  545.  
  546. drawbar:
  547. lea    bar,a0
  548. lea    $50000+3239,a1
  549. lea    $51f40+3239,a2
  550. lea    $53e80+3239,a3
  551. lea    $55dc0+3239,a4
  552. move.l    #439,d7
  553. move.w    d7,d0
  554. pl1:
  555. move.b    (a0)+,(a1)+
  556. dbf    d0,pl1
  557. move.w    d7,d0
  558. pl2:
  559. move.b    (a0)+,(a2)+
  560. dbf    d0,pl2
  561. move.w    d7,d0
  562. pl3:
  563. move.b    (a0)+,(a3)+
  564. dbf    d0,pl3
  565. move.w    d7,d0
  566. pl4:
  567. move.b    (a0)+,(a4)+
  568. dbf    d0,pl4
  569. rts
  570.  
  571. jumptable:
  572. dc.w 44,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24
  573. dc.w 23,22,21,20,19,18,17,16,15,15,14,13,12,11,11,10,9,9,8,7
  574. dc.w 7,6,6,5,5,4,4,3,3,2,2,2,1,1,1,0,0,0,0,0
  575. dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,3
  576. dc.w 3,4,4,4,5,6,6,7,7,8,9,9,10,11,11,12,13,14,15,15
  577. dc.w 16,17,18,19,20,21,22,23,24,24,25,26,27,29,30,31,32,33,34,35
  578. dc.w 36,37,38,39,40,41,42,44
  579.  
  580. level3irq:
  581. movem.l    d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(a7)
  582. bsr    dostars
  583. bsr    doscroll
  584. bsr    doflash
  585. jsr    $7f150
  586. bsr    dobobs
  587. movem.l    (a7)+,d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6
  588. af3:jmp 0
  589.  
  590. waitblitter:
  591. btst    #6,$dff002
  592. bne.s    waitblitter
  593. rts
  594.  
  595. intablep:dc.b 0
  596. intablea:dc.b 40
  597. intables:dc.b 80,0
  598.  
  599. dobobs:
  600. addq.b    #2,intablep
  601. addq.b    #2,intablea
  602. addq.b    #2,intables
  603. moveq    #0,d0
  604. lea    jumptable,a0
  605. move.b    intablep,d0
  606. move.w    (a0,d0.w),d0            ; Get y pos'n
  607. mulu    #40,d0                ; Offset
  608. move.l    d0,a0
  609. move.l    a0,a1
  610. move.l    a1,a2
  611. move.l    a2,a3
  612. add.l    #$5000a,a0
  613. add.l    #$51f4a,a1
  614. add.l    #$53e8a,a2
  615. add.l    #$55dca,a3
  616. moveq    #0,d0
  617. move.l    d0,1400(a0)
  618. move.w    d0,1404(a0)
  619. move.l    d0,1440(a0)
  620. move.w    d0,1444(a0)
  621. move.l    d0,-80(a0)
  622. move.w    d0,-76(a0)
  623. move.l    d0,-40(a0)
  624. move.w    d0,-36(a0)
  625. move.l    d0,1400(a1)
  626. move.w    d0,1404(a1)
  627. move.l    d0,1440(a1)
  628. move.w    d0,1444(a1)
  629. move.l    d0,-80(a1)
  630. move.w    d0,-76(a1)
  631. move.l    d0,-40(a1)
  632. move.w    d0,-36(a1)
  633. move.l    d0,1400(a2)
  634. move.w    d0,1404(a2)
  635. move.l    d0,1440(a2)
  636. move.w    d0,1444(a2)
  637. move.l    d0,-80(a2)
  638. move.w    d0,-76(a2)
  639. move.l    d0,-40(a2)
  640. move.w    d0,-36(a2)
  641. move.l    d0,1400(a3)
  642. move.w    d0,1404(a3)
  643. move.l    d0,1440(a3)
  644. move.w    d0,1444(a3)
  645. move.l    d0,-80(a3)
  646. move.w    d0,-76(a3)
  647. move.l    d0,-40(a3)
  648. move.w    d0,-36(a3)
  649. bsr    waitblitter
  650. move.l #pbob,$dff050        ; BLTAPT
  651. move.l a0,$dff054        ; BLTDPT
  652. move.w #$09f0,$dff040        ; BLTCON0
  653. move.w #$0000,$dff042        ; BLTCON1
  654. move.l #-1,$dff044
  655. move.w #0,$dff064        ; BLTAMOD
  656. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  657. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  658. bsr    waitblitter
  659. move.l #pbob+210,$dff050        ; BLTAPT
  660. move.l a1,$dff054        ; BLTDPT
  661. move.w #$09f0,$dff040        ; BLTCON0
  662. move.w #$0000,$dff042        ; BLTCON1
  663. move.l #-1,$dff044
  664. move.w #0,$dff064        ; BLTAMOD
  665. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  666. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  667. bsr    waitblitter
  668. move.l #pbob+420,$dff050        ; BLTAPT
  669. move.l a2,$dff054        ; BLTDPT
  670. move.w #$09f0,$dff040        ; BLTCON0
  671. move.w #$0000,$dff042        ; BLTCON1
  672. move.l #-1,$dff044
  673. move.w #0,$dff064        ; BLTAMOD
  674. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  675. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  676. bsr    waitblitter
  677. move.l #pbob+630,$dff050
  678. move.l a3,$dff054
  679. move.w #$09f0,$dff040        ; BLTCON0
  680. move.w #$0000,$dff042        ; BLTCON1
  681. move.l #-1,$dff044
  682. move.w #0,$dff064        ; BLTAMOD
  683. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  684. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  685. moveq    #0,d0
  686. lea    jumptable,a0
  687. move.b    intablea,d0
  688. move.w    (a0,d0.w),d0            ; Get y pos'n
  689. mulu    #40,d0
  690. move.l    d0,a0
  691. move.l    a0,a1
  692. move.l    a1,a2
  693. move.l    a2,a3
  694. add.l    #$50010,a0
  695. add.l    #$51f50,a1
  696. add.l    #$53e90,a2
  697. add.l    #$55dd0,a3
  698. moveq    #0,d0
  699. move.l    d0,1400(a0)
  700. move.w    d0,1404(a0)
  701. move.l    d0,1440(a0)
  702. move.w    d0,1444(a0)
  703. move.l    d0,-80(a0)
  704. move.w    d0,-76(a0)
  705. move.l    d0,-40(a0)
  706. move.w    d0,-36(a0)
  707. move.l    d0,1400(a1)
  708. move.w    d0,1404(a1)
  709. move.l    d0,1440(a1)
  710. move.w    d0,1444(a1)
  711. move.l    d0,-80(a1)
  712. move.w    d0,-76(a1)
  713. move.l    d0,-40(a1)
  714. move.w    d0,-36(a1)
  715. move.l    d0,1400(a2)
  716. move.w    d0,1404(a2)
  717. move.l    d0,1440(a2)
  718. move.w    d0,1444(a2)
  719. move.l    d0,-80(a2)
  720. move.w    d0,-76(a2)
  721. move.l    d0,-40(a2)
  722. move.w    d0,-36(a2)
  723. move.l    d0,1400(a3)
  724. move.w    d0,1404(a3)
  725. move.l    d0,1440(a3)
  726. move.w    d0,1444(a3)
  727. move.l    d0,-80(a3)
  728. move.w    d0,-76(a3)
  729. move.l    d0,-40(a3)
  730. move.w    d0,-36(a3)
  731. bsr    waitblitter
  732. move.l #abob,$dff050        ; BLTAPT
  733. move.l a0,$dff054        ; BLTDPT
  734. move.w #$09f0,$dff040        ; BLTCON0
  735. move.w #$0000,$dff042        ; BLTCON1
  736. move.l #-1,$dff044
  737. move.w #0,$dff064        ; BLTAMOD
  738. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  739. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  740. bsr    waitblitter
  741. move.l #abob+210,$dff050        ; BLTAPT
  742. move.l a1,$dff054        ; BLTDPT
  743. move.w #$09f0,$dff040        ; BLTCON0
  744. move.w #$0000,$dff042        ; BLTCON1
  745. move.l #-1,$dff044
  746. move.w #0,$dff064        ; BLTAMOD
  747. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  748. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  749. bsr    waitblitter
  750. move.l #abob+420,$dff050        ; BLTAPT
  751. move.l a2,$dff054        ; BLTDPT
  752. move.w #$09f0,$dff040        ; BLTCON0
  753. move.w #$0000,$dff042        ; BLTCON1
  754. move.l #-1,$dff044
  755. move.w #0,$dff064        ; BLTAMOD
  756. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  757. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  758. bsr    waitblitter
  759. move.l #abob+630,$dff050        ; BLTAPT
  760. move.l a3,$dff054        ; BLTDPT
  761. move.w #$09f0,$dff040        ; BLTCON0
  762. move.w #$0000,$dff042        ; BLTCON1
  763. move.l #-1,$dff044
  764. move.w #0,$dff064        ; BLTAMOD
  765. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  766. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  767. moveq    #0,d0
  768. lea    jumptable,a0
  769. move.b    intables,d0
  770. move.w    (a0,d0.w),d0            ; Get y pos'n
  771. mulu    #40,d0
  772. move.l    d0,a0                ; Offset
  773. move.l    a0,a1
  774. move.l    a1,a2
  775. move.l    a2,a3
  776. add.l    #$50016,a0
  777. add.l    #$51f56,a1
  778. add.l    #$53e96,a2
  779. add.l    #$55dd6,a3
  780. moveq    #0,d0
  781. move.l    d0,1400(a0)
  782. move.w    d0,1404(a0)
  783. move.l    d0,1440(a0)
  784. move.w    d0,1444(a0)
  785. move.l    d0,-80(a0)
  786. move.w    d0,-76(a0)
  787. move.l    d0,-40(a0)
  788. move.w    d0,-36(a0)
  789. move.l    d0,1400(a1)
  790. move.w    d0,1404(a1)
  791. move.l    d0,1440(a1)
  792. move.w    d0,1444(a1)
  793. move.l    d0,-80(a1)
  794. move.w    d0,-76(a1)
  795. move.l    d0,-40(a1)
  796. move.w    d0,-36(a1)
  797. move.l    d0,1400(a2)
  798. move.w    d0,1404(a2)
  799. move.l    d0,1440(a2)
  800. move.w    d0,1444(a2)
  801. move.l    d0,-80(a2)
  802. move.w    d0,-76(a2)
  803. move.l    d0,-40(a2)
  804. move.w    d0,-36(a2)
  805. move.l    d0,1400(a3)
  806. move.w    d0,1404(a3)
  807. move.l    d0,1440(a3)
  808. move.w    d0,1444(a3)
  809. move.l    d0,-80(a3)
  810. move.w    d0,-76(a3)
  811. move.l    d0,-40(a3)
  812. move.w    d0,-36(a3)
  813. bsr    waitblitter
  814. move.l    #sbob,$dff050        ; BLTAPT
  815. move.l    a0,$dff054        ; BLTDPT
  816. move.w    #$09f0,$dff040        ; BLTCON0
  817. move.w    #$0000,$dff042        ; BLTCON1
  818. move.l    #-1,$dff044
  819. move.w    #0,$dff064        ; BLTAMOD
  820. move.w    #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  821. move.w    #35*64+3,$dff058    ; BLTSIZE(11 rows, 16 pixels w)
  822. bsr    waitblitter
  823. move.l #sbob+210,$dff050        ; BLTAPT
  824. move.l a1,$dff054        ; BLTDPT
  825. move.w #$09f0,$dff040        ; BLTCON0
  826. move.w #$0000,$dff042        ; BLTCON1
  827. move.l #-1,$dff044
  828. move.w #0,$dff064        ; BLTAMOD
  829. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  830. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  831. bsr    waitblitter
  832. move.l #sbob+420,$dff050        ; BLTAPT
  833. move.l a2,$dff054        ; BLTDPT
  834. move.w #$09f0,$dff040        ; BLTCON0
  835. move.w #$0000,$dff042        ; BLTCON1
  836. move.l #-1,$dff044
  837. move.w #0,$dff064        ; BLTAMOD
  838. move.w #$22,$dff066        ; BLTDMOD(skip $24 bytes/row)
  839. move.w #35*64+3,$dff058        ; BLTSIZE(11 rows, 16 pixels w)
  840. bsr    waitblitter
  841. move.l    #sbob+630,$dff050        ; BLTAPT
  842. move.l    a3,$dff054        ; BLTDPT
  843. move.w    #$09f0,$dff040        ; BLTCON0
  844. move.w    #$0000,$dff042        ; BLTCON1
  845. move.l    #-1,$dff044
  846. move.w    #0,$dff064
  847. move.w    #$22,$dff066
  848. move.w    #35*64+3,$dff058
  849. rts
  850.  
  851. charset:blk 1280,0
  852.  
  853. bar:blk.l 440,0
  854.  
  855. pbob:blk 904,0
  856. abob:blk 904,0
  857. sbob:blk 904,0
  858.  
  859. copl:
  860. dc.w $0100,$5200
  861. dc.w $00e0,$0005,$00e2,$0000,$00e4,$0005,$00e6,$1f40
  862. dc.w $00e8,$0005,$00ea,$3e80,$00ec,$0005,$00ee,$5dc0
  863. dc.w $00f0,$0005,$00f2,$7d00,$0120,$0000,$0122,$0000
  864. dc.w $0124,$0000,$0126,$0000,$0128,$0000,$012a,$0000
  865. dc.w $012c,$0000,$012e,$0000,$0130,$0000,$0132,$0000
  866. dc.w $0134,$0000,$0136,$0000,$0138,$0000,$013a,$0000
  867. dc.w $013c,$0000,$013e,$0000
  868. dc.w $008e,$2c81,$0090,$f4c1,$0092,$0038,$0094,$00d0
  869. dc.w $0108,$0000,$010a,$0000,$0102,$0088,$0104,$0000
  870. dc.w $0180,$0000,$01a0,$0bbb,$01b0,$0ddd,$01a8,$0fff
  871. dc.w $2b01,$ff00,$0180,$0000
  872. cols:
  873. dc.w $0182,$0f00,$0184,$000f,$0186,$0aad,$0188,$077f
  874. dc.w $018a,$055f,$018c,$0226,$018e,$0448,$0190,$0fff
  875. dc.w $0192,$0ddf,$0194,$0bbe,$0196,$099c,$0198,$088b
  876. dc.w $019a,$077a,$019c,$066a,$019e,$0559,$9001,$ff00
  877. dc.w $0102,$0000
  878. mcol:
  879. dc.w $0182,$000f,$0184,$0f00,$0186,$000f,$0188,$0f00
  880. dc.w $018a,$000f,$018c,$0f00,$018e,$000f,$0190,$0f00
  881. dc.w $0192,$000f,$0194,$0f00,$0196,$000f,$0198,$0f00
  882. dc.w $019a,$000f,$019c,$0f00,$019e,$000f,$01be,$0f00
  883.  
  884. dc.w $f501,$ff00,$008e,$ff80,$0180,$0000,$0090,$0ae0,$0092,$0028
  885. dc.w $0094,$00d8,$0108,$0002,$010a,$0002,$0102,$0000
  886. dc.w $0104,$0000,$0100,$1200,$00e0,$0005,$00e2,$a000
  887. dc.w $ffdf,$fffe,$0182
  888. flash:
  889. dc.w $000f,$0201,$ff00,$0182
  890. dc.w $000e,$0301,$ff00,$0182
  891. dc.w $000d,$0401,$ff00,$0182
  892. dc.w $000c,$0501,$ff00,$0182
  893. dc.w $000b,$0601,$ff00,$0182
  894. dc.w $000a,$0701,$ff00,$0182
  895. dc.w $0009,$0801,$ff00,$0182
  896. dc.w $0008,$0901,$ff00,$0182
  897. dc.w $0007,$0a01,$ff00,$0182
  898. dc.w $0006,$0b01,$ff00,$0182
  899. dc.w $0005,$0c01,$ff00,$0182
  900. dc.w $0004,$0d01,$ff00,$0182
  901. dc.w $0003,$0e01,$ff00,$0182
  902. dc.w $0002,$0f01,$ff00,$0182
  903. dc.w $0001,$1001,$ff00,$0182
  904. dc.w $0000,$1101,$ff00,$0182
  905. dc.w $0000,$1201,$ff00,$0182
  906. dc.w $0001,$1301,$ff00,$0182
  907. dc.w $0002,$1401,$ff00,$0182
  908. dc.w $0003,$1501,$ff00,$0182
  909. dc.w $0004,$1601,$ff00,$0182
  910. dc.w $0005,$1701,$ff00,$0182
  911. dc.w $0006,$1801,$ff00,$0182
  912. dc.w $0007,$1901,$ff00,$0182
  913. dc.w $0008,$1a01,$ff00,$0182
  914. dc.w $0009,$1b01,$ff00,$0182
  915. dc.w $000a,$1c01,$ff00,$0182
  916. dc.w $000b,$1d01,$ff00,$0182
  917. dc.w $000c,$1e01,$ff00,$0182
  918. dc.w $000d,$1f01,$ff00,$0182
  919. dc.w $000e,$2001,$ff00,$0182
  920. dc.w $000f
  921. dc.w $fffe,$fffe,0,0
  922.